Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO
■DMAコントローラ
対象 ノーマル,ハイレゾ
チップ 8237A相当品
解説 o PC-9800(PC-H98,PC-98LT・HA,DB-P1を除く)では、DMAコントローラとして
8237A(相当品)を使用している。
PC-H98は、8237A上位互換の独自32bit DMAコントローラを使用している。
u PC-98LT・HA,DB-P1は、V50内蔵DMAU(DMA Unit)を使用している。V50内蔵
DMAUはμPD71071のサブセットで、8237Aとは互換性がない。DB-P1で使用
しているV50HLのDMAUは8237A互換モードも備えているが、μPD71071モードで
使用している。
o DMAチャネルの使用方法は機種毎に差異がある。
[PC-9801初代・E・F・M・VM2・VF・U・UV2・UV21]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし *1 |DACK00,DRQ00信号
1 |メモリ リフレッシュ |なし
2 |両用FD I/F *2 |DACK20,DRQ20信号(最終スロットのみ)
|(1MB I/Fモード時) |
3 |両用FD I/F *2 |DACK30,DRQ30信号(最終スロット以外)
|(640KB I/Fモード時)|
--------+-----------------+-----------------------------------
*1:PC-9801F3・M3・VM4は、内蔵SASI I/Fが使用する。
*2:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で
設定する。内蔵FD I/Fが使用しないチャネルは拡張スロットで使用可能。
[PC-9801T・DA・DS・DX・CS・FA・FS・FX,PC-9821Aシリーズ,PC-98GS,PC-98RL(ノーマル)]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |内蔵HD I/F *1 |DACK00,DRQ00信号
1 |内蔵HD I/F *2 |なし
2 |両用FD I/F *3 |なし
|(1MB I/Fモード時) |
3 |両用FD I/F *3 |DACK30,DRQ30信号
|(640KB I/Fモード時)|
--------+-----------------+-----------------------------------
*1:DIP SW 3-3がOFFのとき、内蔵HDのI/FがCH#0を使用する。このとき
拡張スロットでCH#0は使用できない。
*2:DIP SW 3-3がONのとき、内蔵HDのI/FがCH#1を使用する。このとき
拡張スロットでCH#0が使用できる。
*3:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で
設定する。1MB I/Fモード時は、CH#3が拡張スロットで使用可能。
[PC-H98 ノーマルモード]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし |DRQ00信号(Cバス,Eバス)
1 |両用FD I/F |DRQ10(Eバス)
2 |両用FD I/F *1 |DRQ20(Eバス)
|(1MB I/Fモード時) |
3 |両用FD I/F *1 |DRQ30信号(Cバス,Eバス)
|(640KB I/Fモード時)|
4 |なし |DRQ40(Eバス)
5 |なし |DRQ50(Eバス)
6 |なし |DRQ60(Eバス)
--------+-----------------+-----------------------------------
*1:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で
設定する。内蔵FD I/Fが使用しないチャネルは拡張スロットで使用可能。
* 内蔵ハードディスク,NESA用HD I/Fは、使用するDMAチャネルを
マニュアルセットアップで設定可能。
* DMAチャネル7は使用不可。
[その他の機種のノーマルモード]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし *1 |DACK00,DRQ00信号
1 |なし |なし
2 |両用FD I/F *1 |なし
|(1MB I/Fモード時) |
3 |両用FD I/F *1 |DACK30,DRQ30信号
|(640KB I/Fモード時)|
--------+-----------------+-----------------------------------
*1:両用FD I/Fは、CH#2または3のどちらかを使用する。DIP SW 3-1,3-2で
設定する。1MB I/Fモード時は、CH#3が拡張スロットで使用可能。
[PC-98XA]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし |DACK00,DRQ00信号(スロット#1,2,3,5のみ)
1 |両用FD I/F |DACK10,DRQ10信号(スロット#1のみ) *1
2 |なし |DACK20,DRQ20信号(スロット#2のみ)
3 |なし *2 |DACK30,DRQ30信号(スロット#3,4,5のみ)
--------+-----------------+-----------------------------------
*1:スロット#1には標準で両用FD I/Fが実装されている。
*2:PC-98XA model 3・31は、内蔵SASI I/Fが使用する。
[PC-98XL・XL^2 ハイレゾモード]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし *1 |DACK00,DRQ00信号
1 |両用FD I/F |なし
2 |なし |なし
3 |なし |DACK30,DRQ30信号
--------+-----------------+-----------------------------------
*1:PC-98XL model4,PC-98XL^2は、内蔵SASI I/Fが使用する。
[PC-98RL ハイレゾモード]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |内蔵HD I/F *1 |DACK00,DRQ00信号
1 |両用FD I/F |なし
2 |内蔵HD I/F *2 |なし
3 |なし |DACK30,DRQ30信号
--------+-----------------+-----------------------------------
*1:DIP SW 3-3がOFFのとき、内蔵HDのI/FがCH#0を使用する。このとき
拡張スロットでCH#0は使用できない。
*2:DIP SW 3-3がONのとき、内蔵HDのI/FがCH#2を使用する。このとき
拡張スロットでCH#0が使用できる。
関連 0000:0484h bit 7,6
[PC-H98 ハイレゾモード]
--------+-----------------+-----------------------------------
DMAチャネル |使用する内蔵装置 |拡張スロット
--------+-----------------+-----------------------------------
0 |なし |DRQ00信号(Cバス,Eバス)
1 |両用FD I/F |DRQ10(Eバス)
2 |なし |DRQ20(Eバス)
3 |なし |DRQ30信号(Cバス,Eバス)
4 |なし |DRQ40(Eバス)
5 |なし |DRQ50(Eバス)
6 |なし |DRQ60(Eバス)
--------+-----------------+-----------------------------------
* 内蔵ハードディスク,NESA用HD I/Fは、使用するDMAチャネルを
マニュアルセットアップで設定可能。
* DMAチャネル7は使用不可。
o DMA制御関連のI/Oアドレスは以下の通り。
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0001h |BYTE|R/W|チャネル0 カレントアドレスレジスタ
0003h |BYTE|R/W|チャネル0 カレントワードレジスタ
0005h |BYTE|R/W|チャネル1 カレントアドレスレジスタ
0007h |BYTE|R/W|チャネル1 カレントワードレジスタ
0009h |BYTE|R/W|チャネル2 カレントアドレスレジスタ
000Bh |BYTE|R/W|チャネル2 カレントワードレジスタ
000Dh |BYTE|R/W|チャネル3 カレントアドレスレジスタ
000Fh |BYTE|R/W|チャネル3 カレントワードレジスタ
0021h |BYTE| W |DMAチャネル1 バンクアドレス
0023h |BYTE| W |DMAチャネル2 バンクアドレス
0025h |BYTE| W |DMAチャネル3 バンクアドレス
0027h |BYTE| W |DMAチャネル0 バンクアドレス
002Bh |BYTE|R/W|32bit DMA CONTROLLER(インデックス)
002Dh |BYTE|R/W|32bit DMA CONTROLLER(データ)
0E05h |BYTE| W |DMAチャネル0 拡張バンクアドレス
0E07h |BYTE| W |DMAチャネル1 拡張バンクアドレス
0E09h |BYTE| W |DMAチャネル2 拡張バンクアドレス
0E0Bh |BYTE| W |DMAチャネル3 拡張バンクアドレス
-----------+----+---+-------------------------------------------------
関連 I/O 0259h,0A59h - 74h,75h
0000:0484h bit 7,6
0000:0591h
0000:05ADh bit 5
I/O 0001h,0005h,0009h,000Dh
名前 カレントアドレスレジスタの設定
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0001h |BYTE|R/W|チャネル0 カレントアドレスレジスタ
0005h |BYTE|R/W|チャネル1 カレントアドレスレジスタ
0009h |BYTE|R/W|チャネル2 カレントアドレスレジスタ
000Dh |BYTE|R/W|チャネル3 カレントアドレスレジスタ
-----------+----+---+-------------------------------------------------
解説 o DMACのカレントアドレスレジスタ(転送開始アドレス)を設定する。
o 1度目のアクセスではbit 7〜0を、2度目のアクセスではbit 15〜8を扱う。
関連 I/O 0019h
I/O 0003h,0007h,000Bh,000Fh
名前 カレントワードレジスタの設定
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0003h |BYTE|R/W|チャネル0 カレントワードレジスタ
0007h |BYTE|R/W|チャネル1 カレントワードレジスタ
000Bh |BYTE|R/W|チャネル2 カレントワードレジスタ
000Fh |BYTE|R/W|チャネル3 カレントワードレジスタ
-----------+----+---+-------------------------------------------------
解説 o DMACのカレントワードレジスタ(転送数)を設定する。
o 1度目のアクセスではbit 7〜0を、2度目のアクセスではbit 15〜8を扱う。
関連 I/O 0019h
I/O 0011h
名前 リードステータス,ライトコマンド
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] リードステータス
bit 7〜4: RQ3〜RQ0
1= リクエストあり
0= リクエストなし
* リクエスト中のDMAチャネルに対応するビットがセットされる
bit 3〜0: TC3〜TC0
1= TCに到達した
0= TCに到達していない
* TC(Terminal Count)に到達したDMAチャネルに対応するビットが
セットされる
[WRITE] ライトコマンド
bit 7: KS
* PC-9800では0を設定する(DACKアクティブLOW)
bit 6: DS
* PC-9800では1を設定する(DREQアクティブLOW)
bit 5: WS
* PC-9800では0を設定する(遅れライト選択)
bit 4: PR
* PC-9800では0を設定する(固定優先順位)
bit 3: TM
* PC-9800では0を設定する(通常タイミング)
bit 2: CE
1= コントローラ禁止
0= コントローラ許可
bit 1: AH
* PC-9800では0を設定する(チャネル0アドレスホールド禁止)。
ただし、bit 0=0なので実際にはこのビットはDon't Care。
bit 0: MM
* PC-9800では0を設定する(メモリ-メモリ転送禁止)
解説 o DMACのステータスレジスタの読み出し、コマンドレジスタへの書き込みを
行う。
関連 I/O 0019h
I/O 0013h
名前 ライトリクエスト
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] 禁止
[WRITE]
bit 7〜3: Don't Care
bit 2: RB
1= リクエストセット
0= リクエストクリア
bit 1,0: CS1,CS0
11b= チャネル3
10b= チャネル2
01b= チャネル1
00b= チャネル0
解説 o 指定したDMAチャネルのリクエストビットを設定する。
関連
I/O 0015h
名前 ライトシングルマスクレジスタビット
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] なし
[WRITE]
bit 7〜3: Dont' Care
bit 2: MK
1= マスクセット
0= マスククリア
bit 1,0: CS1,CS0
11b= チャネル3
10b= チャネル2
01b= チャネル1
00b= チャネル0
解説 o 指定したDMAチャネルのマスクを設定する。
関連
I/O 0017h
名前 ライトモード
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] 禁止
[WRITE]
bit 7,6: MS1,MS0
* PC-9800では01b(シングルモード)に固定
bit 5: ID
1= アドレスデクリメント
0= アドレスインクリメント
bit 4: AT
1= オートイニシャライズ許可
0= オートイニシャライズ禁止
bit 3,2: TR1,TR0
11b= 禁止
10b= リード転送(メモリ→I/O)
01b= ライト転送(I/O→メモリ)
00b= ベリファイ転送
bit 1,0: CS1,CS0
11b= チャネル3
10b= チャネル2
01b= チャネル1
00b= チャネル0
解説 o 指定したDMAチャネルの転送モードを指定する。
I/O 0019h
名前 クリアバイトポインタフリップフロップ
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] 禁止
[WRITE]
bit 7〜0: 任意の値
解説 o バイトポインタフリップフロップをクリアする。I/O 0001〜000Fhでは
16ビットの値を下位・上位に分けて扱うが、このI/Oポートに出力したあとの
I/O 0001〜000Fhのアクセスは、下位8ビットのデータと見なされる。
関連 I/O 0001〜000Fh
I/O 001Bh
名前 リードテンポラリレジスタ,マスタクリア
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] リードテンポラリレジスタ
[WRITE] マスタクリア
bit 7〜0: 任意の値
解説 o テンポラリレジスタは、メモリ-メモリ間転送時に、最後に転送した
データを保持している。PC-9800はメモリ-メモリ転送をサポートして
いないので、このレジスタを読み出すことは無意味。
o このポートに出力(マスタクリア)すると、DMACはハードウェアリセット
されたのと同じ状態になる。
関連
I/O 001Dh
名前 クリアマスクレジスタ
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] 禁止
[WRITE] クリアマスクレジスタ
bit 7〜0: Don't Care
解説 o 全チャネルのマスクを解除する。
関連
I/O 001Fh
名前 ライトオールマスクレジスタビット
対象 ノーマル,ハイレゾ
チップ μPD8237A相当
機能
[READ] 禁止
[WRITE] ライトオールマスクレジスタビット
bit 7〜4: Don't Care
bit 3〜0: MB3〜MB0
1= マスクセット
0= マスククリア
解説 o DMAチャネル0〜3のマスクを同時に設定する。各チャネルに対応したビットを
設定する。
I/O 0021h,0023h,0025h,0027h
名前 バンクアドレス設定
対象 ノーマル,ハイレゾ
チップ DMA周辺
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0021h |BYTE| W |DMAチャネル1 バンクアドレス
0023h |BYTE| W |DMAチャネル2 バンクアドレス
0025h |BYTE| W |DMAチャネル3 バンクアドレス
0027h |BYTE| W |DMAチャネル0 バンクアドレス
-----------+----+---+-------------------------------------------------
* bit 7〜0=A23〜A16
解説 o μPD8237Aは8ビットCPU用DMACであるため、DMAC自身では16ビット幅の
アドレス(64Kバイト)しか制御できない。このため、PC-9800では外部に
レジスタを設けて、24ビット幅(16Mバイト)までのアドレスを扱えるように
している。
o 8086,V30,V33機では、A19〜A16(bit 3〜0)のみ有効。
PC-98XAでは、A22〜A16(bit 6〜0)のみ有効。
o このポートをリードしても設定値を読み出すことはできない。
u 16Mバイトを超えるメモリ空間に対してDMA転送する場合は、I/O 0E05〜0E0Bhを
使用する。
関連 I/O 0029h
I/O 0439h bit 2
I/O 0E07h
I/O 0E09h
I/O 0E0Bh
I/O 0E05h
I/O 0029h
名前 バンクアドレスオートインクリメントモードレジスタ
対象 80286以上のCPU搭載機
チップ DMA周辺
機能
[READ] なし
[WRITE]
bit 7〜4: 0000bを設定する
bit 3,2: M1,M0 インクリメントモード
11b= 16Mバイト境界(PC-98XAは設定不可)
10b= 設定禁止
01b= 1Mバイト境界
00b= 64Kバイト境界
bit 1,0: CS1,CS0
11b= チャネル3
10b= チャネル2
01b= チャネル1
00b= チャネル0
解説 o カレントアドレスレジスタ(転送アドレス)がラップアラウンドしたときの
動作を設定する。
o インクリメントモードが64Kバイト境界のときは、物理アドレスxxFFFFhを
跨ぐような転送はできない。インクリメントモードを1Mバイト,16Mバイト
境界にすれば、DMACがラップアラウンドしたとき、バンクアドレスが自動的に
インクリメントされる。
u 起動時のDMAバンクインクリメント境界は64Kバイト。
関連 I/O 0021h,0023h,0025h,0027h
I/O 0439h
名前 DMAアクセス制御等
対象 80286以上のCPU搭載機(PC-98XAを除く)
チップ DMA周辺
機能
[READ/WRITE]
bit 7: プリンタI/F選択■[PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3]
■Undocumented
1= 本体内蔵のプリンタインターフェース
0= 98ハイレゾボード上のプリンタインターフェース
解説 o PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3に98ハイレゾボード
(PC-9821-E02)を搭載したとき、本体内蔵プリンタインターフェースと
98ハイレゾボード上のプリンタインターフェースのどちらかを
使用するか選択できる。通常は98ハイレゾボード上のプリンタ
インターフェースを使用する。
u このポートは、PC-9821Ne・Bf・Bp・Bs・Be・Xt・Xa・Xn・Xp・Xs・Xe,
PC-9801BA2・BS2・BX2・BA3・BX3等にも存在する。0を出力すると
本体内蔵のプリンタインターフェースが切り離される。
bit 6: 未使用(?)
bit 5: 不明 ■Undocumented
bit 4: 不明 ■Undocumented
bit 3: 未使用(?)
bit 2: DMAアドレスマスクレジスタ
1= 1Mバイト以上のアドレスへのDMAアクセス禁止
0= 1Mバイト以上のアドレスへのDMAアクセス許可
解説 o 1Mバイト以上の空間でのDMA転送の禁止/許可を設定する。
o ノーマルモードの起動時設定は1、ハイレゾモードの起動時設定は0。
bit 1: 高速グラフLIOサポートBIOS■[PC-9801VX21]
■Undocumented
1= 使用する
0= 使用しない
bit 0: 不明 ■Undocumented
■[PC-9821Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3]
1= ハイレゾモード
0= ノーマルモード
解説 o bit 2以外はUndocumented。
関連 0000:0480h bit 6
I/O 002Bh,002Dh
名前 32bit DMAコントローラ
Undocumented
対象 PC-H98
チップ ORBIT
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
002Bh |BYTE|R/W|32bit DMA CONTROLLER(インデックス)
002Dh |BYTE|R/W|32bit DMA CONTROLLER(データ)
-----------+----+---+-------------------------------------------------
解説 o PC-H98はDMA機能が大幅に拡張されている。
従来のPC-9800互換のチャネル0〜4と、新設のチャネル5〜7の合計8チャネルを
サポートしている。DMA転送可能なメモリ空間は4Gバイト、データ転送幅は
8/16/32ビットから選択できる。
o PC-H98の32bit DMAコントローラは、Intel i82380(High Performance 32bit
DMA Controller with Integrated System Support Peripherals)のDMAC部分を
ベースにしている模様。μPD8237A互換機能やPC-9800用のDMA周辺回路などが
追加されている。このため、チャネル0〜4にアクセスする場合は、従来の
DMAC用I/Oポートも使用できる。
o I/O 002Bhで32bit DMAコントローラのレジスタ番号を指定し、I/O 002Dhで
レジスタの読み書きを行う。
u PC-H98以外の16MB超メモリ搭載可能機では、16MBを超えるメモリ空間に
DMA転送する方法はPC-H98と異なる。
関連 0000:0458h bit 7
I/O 0001〜0029h
I/O 0E05h,0E07h,0E09h,0E0Bh
表 32bit DMAコントローラのレジスタ一覧
----------------+----------------------------------------------
レジスタ番号 |内容
----------------+----------------------------------------------
00h |DMA#0 TargetAddress(A7〜A0,A15〜A8)
----------------+----------------------------------------------
01h |DMA#0 ByteCount(C7〜C0,C15〜C8)
----------------+----------------------------------------------
02h |DMA#1 TargetAddress(A7〜A0,A15〜A8)
----------------+----------------------------------------------
03h |DMA#1 ByteCount(C7〜C0,C15〜C8)
----------------+----------------------------------------------
04h |DMA#2 TargetAddress(A7〜A0,A15〜A8)
----------------+----------------------------------------------
05h |DMA#2 ByteCount(C7〜C0,C15〜C8)
----------------+----------------------------------------------
06h |DMA#3 TargetAddress(A7〜A0,A15〜A8)
----------------+----------------------------------------------
07h |DMA#3 ByteCount(C7〜C0,C15〜C8)
----------------+----------------------------------------------
08h |DMA#0〜3 Status/Commnad Register
----------------+----------------------------------------------
09h |DMA#0〜3 Software Request Register
----------------+----------------------------------------------
0Ah |DMA#0〜3 Set-Reset Mask Register
----------------+----------------------------------------------
0Bh |DMA#0〜3 Mode Register I
----------------+----------------------------------------------
0Ch |DMA#0〜3 Write Clear Byte-Pointer FF
----------------+----------------------------------------------
0Dh |DMA#0〜3 Write DMA master clear
----------------+----------------------------------------------
0Eh |DMA#0〜3 Write DMA#0〜3 Clear Mask Register
----------------+----------------------------------------------
0Fh |DMA#0〜3 Mask Regiser
----------------+----------------------------------------------
10h |DMA#0 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
11h |DMA#0 拡張カウント(C23〜C16)
----------------+----------------------------------------------
12h |DMA#1 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
13h |DMA#1 拡張カウント(C23〜C16)
----------------+----------------------------------------------
14h |DMA#2 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
15h |DMA#2 拡張カウント(C23〜C16)
----------------+----------------------------------------------
16h |DMA#3 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
17h |DMA#3 拡張カウント(C23〜C16)
----------------+----------------------------------------------
18h |DMA#0〜3 DMA幅,サイクル設定
|bit 7〜4: BS3,BS2,BS1,BS0
| 1111b= 8bit
| 1010b= 16bit
| 0101b= 32bit
| これ以外は設定禁止
|bit 3,2: TY1,TY0
| 00b= 互換サイクル
| 01b= タイプA
| 10b= タイプB
| 11b= リザーブ
|bit 1,0: DMAチャンネル
| 00b= ch0
| 01b= ch1
| 10b= ch2
| 11b= ch3
----------------+----------------------------------------------
19h |DMA#0〜3 Chaining Register
----------------+----------------------------------------------
1Ah |DMA#0〜3 Commnad Regiser II
----------------+----------------------------------------------
1Bh |DMA#0〜3 Mode Regiser II
----------------+----------------------------------------------
1Ch |Refresh Control Register
----------------+----------------------------------------------
75h |Refresh Wait State Register
----------------+----------------------------------------------
7Fh |DMA#4〜7 バンクアドレスオートインクリメントモードレジスタ
| * 指定方法はI/O 0029hと同じ。
----------------+----------------------------------------------
89h |DMA#6 バンク(A23〜A16)
----------------+----------------------------------------------
8Ah |DMA#7 バンク(A23〜A16)
----------------+----------------------------------------------
8Bh |DMA#5 バンク(A23〜A16)
----------------+----------------------------------------------
8Fh |DMA#4 バンク(A23〜A16)
----------------+----------------------------------------------
C0h |DMA#4 アドレス(A7〜A0),(A15〜A8)
----------------+----------------------------------------------
C1h |DMA#4 カウント(C7〜C0),(C15〜C8)
----------------+----------------------------------------------
C2h |DMA#5 アドレス(A7〜A0),(A15〜A8)
----------------+----------------------------------------------
C3h |DMA#5 カウント(C7〜C0),(C15〜C8)
----------------+----------------------------------------------
C4h |DMA#6 アドレス(A7〜A0),(A15〜A8)
----------------+----------------------------------------------
C5h |DMA#6 カウント(C7〜C0),(C15〜C8)
----------------+----------------------------------------------
C6h |DMA#7 アドレス(A7〜A0),(A15〜A8)
----------------+----------------------------------------------
C7h |DMA#7 カウント(C7〜C0),(C15〜C8)
----------------+----------------------------------------------
C8h |DMA#4〜7 ライトコマンド/リードステータス
| * 指定方法はI/O 0011hと同じ。
----------------+----------------------------------------------
C9h |DMA#4〜7 ライトリクエスト
| * 指定方法はI/O 0013hと同じ。
----------------+----------------------------------------------
CAh |DMA#4〜7 ライトシングルマスクレジスタビット
| * 指定方法はI/O 0015hと同じ。
----------------+----------------------------------------------
CBh |DMA#4〜7 ライトモード
| * 指定方法はI/O 0017hと同じ。
----------------+----------------------------------------------
CCh |DMA#4〜7 クリアバイトポインタフリップフロップ
| * 指定方法はI/O 0019hと同じ。
----------------+----------------------------------------------
CDh |DMA#4〜7 マスタクリア
| * 指定方法はI/O 001Bhと同じ。
----------------+----------------------------------------------
CEh |DMA#4〜7 クリアマスクレジスタ
| * 指定方法はI/O 001Dhと同じ。
----------------+----------------------------------------------
CFh |DMA#4〜7 ライトオールマスクレジスタビット
| * 指定方法はI/O 001Fhと同じ。
----------------+----------------------------------------------
D0h |DMA#4 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
D1h |DMA#4 拡張カウント(C23〜C16)
----------------+----------------------------------------------
D2h |DMA#5 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
D3h |DMA#5 拡張カウント(C23〜C16)
----------------+----------------------------------------------
D4h |DMA#6 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
D5h |DMA#6 拡張カウント(C23〜C16)
----------------+----------------------------------------------
D6h |DMA#7 拡張アドレスバンク(A31〜A24)
----------------+----------------------------------------------
D7h |DMA#7 拡張カウント(C23〜C16)
----------------+----------------------------------------------
D8h |DMA#4〜7 DMA幅,サイクル設定
|bit 7〜4: BS3,BS2,BS1,BS0
| 1111b= 8bit
| 1010b= 16bit
| 0101b= 32bit
| これ以外は設定禁止
|bit 3,2: TY1,TY0
| 00b= 互換サイクル
| 01b= タイプA
| 10b= タイプB
| 11b= リザーブ
|bit 1,0: DMAチャンネル
| 00h= ch4
| 01h= ch5
| 10h= ch6
| 11h= ch7
----------------+----------------------------------------------
D9h |DMA#4〜7 不明
| * 詳細不明
----------------+----------------------------------------------
DBh |DMA#4〜7 不明
| * 詳細不明
----------------+----------------------------------------------
I/O 0E05h,0E07h,0E09h,0E0Bh
名前 DMA 拡張バンクレジスタ
Undocumented
対象 16Mバイト超メモリ搭載可能機(PC-H98を除く)
チップ DMAC周辺
機能
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0E05h |BYTE| W |DMAチャネル0 拡張バンクアドレス
0E07h |BYTE| W |DMAチャネル1 拡張バンクアドレス
0E09h |BYTE| W |DMAチャネル2 拡張バンクアドレス
0E0Bh |BYTE| W |DMAチャネル3 拡張バンクアドレス
-----------+----+---+-------------------------------------------------
解説 o 使用方法の詳細は不明。
o μPD8237Aは8ビットCPU用DMACであるため、DMAC自身では16ビット幅の
アドレス(64Kバイト)しか制御できない。このため、PC-9800では外部に
DMAバンクレジスタ(I/O 0021〜0029h)を設けて、24ビット幅(16Mバイト)
までのアドレスにDMA転送できるように拡張していた。16Mバイト超の
メモリを搭載可能な機種では、DMA転送可能なアドレス空間をさらに拡張する
ために、拡張DMAバンクレジスタを搭載している。
関連 I/O 0439h bit 2
I/O 0021〜0029h
I/O 002Bh,002Dh